<template>
  <div class="app-container">
    <upload-excel :on-success="handleSuccess" :before-upload="beforeUpload" />
  </div>
</template>

<script>
import { reqImportEmployee } from '@/api/employees'
import dayjs from 'dayjs'

export default {
  name: 'ImportPage',
  data() {
    return {
    }
  },
  computed: {
    // 使用计算属性得到查询参数中的type值 ? 使用query获取  /xxx params获取
    type() {
      return this.$route.query.type
    }
  },
  // mounted() {
  //   console.log(this.$router)
  // },
  methods: {
    // 上传之前的校验函数校验上传文件的大小
    beforeUpload(file) {
      // 是否小于1M
      const isLt1M = file.size / 1024 / 1024 < 1
      // 如果小于1M,返回true
      if (isLt1M) {
        return true
      }
      // 上传的文件大于1M, 禁止上传
      this.$message({
        message: '上传的文件必须在1M以内',
        type: 'warning'
      })
      return false
    },
    // 上传成功的函数
    async handleSuccess({ results, header }) { // header表格的标题, results表格数据
      // console.log(results, header)
      // results结果数组中数据的键都是中文, 待会处理成英文
      // header中, results中的数据是中文的, 但是提交给后台的要是英文的
      if (this.type === '员工') {
        // 1. 中英对照的规则
        const userRelations = {
          '入职日期': 'timeOfEntry',
          '手机号': 'mobile',
          '姓名': 'username',
          '转正日期': 'correctionTime',
          '工号': 'workNumber',
          '部门': 'departmentName'
        }
        const arr = results.map(item => {
          const o = {}
          for (const k in item) {
          // console.log(k) // 中文的键
          // console.log(userRelations[k]) // 英文的键
            const englishKey = userRelations[k]
            // 给对象设置英文的键和值
            if (['correctionTime', 'timeOfEntry'].includes(englishKey)) {
            // o[englishKey] = this.formatExcelDate(item[k], '-') 少一天
              o[englishKey] = dayjs(this.formatExcelDate(item[k], '-')).add(1, 'days').format('YYYY-MM-DD')
            } else {
              o[englishKey] = item[k]
            }
          }
          return o
        })
        console.log(arr)
        // 2. 将处理的结果发送请求
        await reqImportEmployee(arr)
        // 3. 提示 统一在响应拦截器中处理了
        // 4. 回到员工页面
        this.$router.back()
      }
      if (this.type === '考勤') {
        console.log('走考勤的导入业务')
      }
    },
    // 处理excel日期问题 excel计算时间是从1900开始  计算机是1970年开始
    formatExcelDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1) // 毫秒
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>
